import store from "../store/index.js";

function hasPermission(value, el = false) {
	// 检查 value 是否为数组，如果不是则抛出错误
	if (!Array.isArray(value)) {
		throw new Error(`需要配置权限，例如 v-permission="['getStatistics3,GET']"`);
	}

	// 检查 store 和 store.state.ruleNames 是否存在
	if (!store || !store.state || !store.state.ruleNames) {
		throw new Error('store 或 store.state.ruleNames 未定义');
	}

	// 使用 some 方法检查 value 中的元素是否存在于 store.state.ruleNames 中
	const hasAuth = value.some(v => store.state.ruleNames.includes(v));

	// 如果 el 存在且没有权限，则移除该元素
	if (el && !hasAuth) {
		el.parentNode && el.parentNode.removeChild(el);
	}

	return hasAuth;
}

export default {
	install(app) {
		app.directive("permission", {
			mounted(el, binding) {
				hasPermission(binding.value, el);
			}
		});
	}
};